//
//  UIImage+DJResize.h
//  照相机demo
//
//  Created by Jason on 6/1/16.
//  Copyright © 2016年 Jason. All rights reserved.
//



#import <UIKit/UIKit.h>
@interface UIImage (Resize)
//根据rect裁剪图片
- (UIImage *)croppedImage:(CGRect)bounds;
//根据size裁剪图片 写入质量高时间长
- (UIImage *)resizedImage:(CGSize)newSize
     interpolationQuality:(CGInterpolationQuality)quality;
//根据UIViewContentMode 图片大小 写入质量高时间长
- (UIImage *)resizedImageWithContentMode:(UIViewContentMode)contentMode
                                  bounds:(CGSize)bounds
                    interpolationQuality:(CGInterpolationQuality)quality;

- (UIImage *)resizedImage:(CGSize)newSize
                transform:(CGAffineTransform)transform
           drawTransposed:(BOOL)transpose
     interpolationQuality:(CGInterpolationQuality)quality;

- (CGAffineTransform)transformForOrientation:(CGSize)newSize;

- (UIImage *)fixOrientation;

- (UIImage *)rotatedByDegrees:(CGFloat)degrees;

@end


@interface UIImage (Alpha)
/**
 *  判断是否有透明
 */
- (BOOL)hasAlpha;
/**
 *  返回透明图片
 */
- (UIImage *)imageWithAlpha;
/**
 *  指定透明的图片
 *
 *  @param 边框大小
 *
 *  @return 透明的图片
 */
- (UIImage *)transparentBorderImage:(NSUInteger)borderSize;
@end



@interface UIImage (RoundedCorner)
/**
 *  。。。。
 *
 *  @param cornerSize
 *
 *  @param borderSize
 *
 *  @return 。。。。
 */
- (UIImage *)roundedCornerImage:(NSInteger)cornerSize borderSize:(NSInteger)borderSize;
@end



@interface UIImage (UIImageExt)
/**
 *  按比例缩放图片
 *
 *  @param size 大小
 *
 *  @return 缩放的图片
 */
-(UIImage *)scaleToSize:(CGSize)size;
/**
 *  裁剪缩放的图片
 *
 *  @param size 大小
 *
 *  @return 裁剪的图片
 */

-(UIImage *)imageByScalingAndCroppingForSize:(CGSize)targetSize;
/**
 *  压缩的图片
 *
 *  @param sourceImage 源图片
 *  @param size 目标大小
 *
 *  @return 压缩图片
 */
-(UIImage *) imageCompressForSize:(UIImage *)sourceImage targetSize:(CGSize)size;
/**
 *  压缩的图片
 *
 *  @param sourceImage 源图片
 *  @param defineWidth 默认的宽度
 *
 *  @return 压缩图片
 */
-(UIImage *) imageCompressForWidth:(UIImage *)sourceImage targetWidth:(CGFloat)defineWidth;
@end



typedef NS_ENUM(NSInteger, NSPUIImageType)
{   NSPUIImageType_JPEG,
    NSPUIImageType_PNG,
    NSPUIImageType_Unknown
};

@interface UIImage (data)

/**
*  将Image转data
*/
-(NSData *)onDataByImage;

/**
 *  生成二维码
 */
+ (UIImage *)qrImageForString:(NSString *)string imageSize:(CGFloat)Imagesize;
@end



@interface UIImage (CZ)

/**
 *  一张自由拉伸的图片
 *
 *  @param name 图片名字
 *
 *  @return 拉伸的图片
 */
+ (UIImage *)resizedImageWithName:(NSString *)name;

/**
 *  自由拉伸的图片
 *
 *  @param name 图片名字
 *  @param left 左边
 *  @param top  上边
 *
 *  @return 拉伸的图片
 */
+ (UIImage *)resizedImageWithName:(NSString *)name left:(CGFloat)left top:(CGFloat)top;

/**
 *  图片切圆
 *
 *  @param name        图片名字
 *  @param borderWidth 边宽
 *  @param borderColor 边颜色
 *
 *  @return 切圆图片
 */
+ (instancetype)circleImageWithName:(NSString *)name borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor;
/**
 *  图片切圆
 *
 *  @param image        图片
 *  @param borderWidth 边宽
 *  @param borderColor 边颜色
 *
 *  @return 切圆图片
 */
+ (instancetype)circleImageWithImage:(UIImage *)image borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor;
/**
 *  加载项目中的图片
 *
 *  @param name 图片名字
 *
 *  @return 加载好的图片
 */
+(UIImage *)imageFromMainBundleWithName:(NSString *)name;
@end


@interface UIImage (Path)
/**
 *  加载项目中的图片
 *
 *  @param path 图片路径
 *
 *  @return 加载好的图片
 */
+(UIImage *)imageByPath:(NSString *)path;
@end



@interface UIImage (Tools)

@property (nonatomic, assign) CGFloat width;
@property (nonatomic, assign) CGFloat height;


/**
 *  修改图片size
 *
 *  @param image      原图片
 *  @param targetSize 要修改的size
 *
 *  @return 修改后的图片
 */
+ (UIImage *)image:(UIImage*)image byScalingToSize:(CGSize)targetSize;

/**
 *  按图片的比例，根据宽取得 按比例的高
 *
 *  @param width 宽
 *
 *  @return 高
 */
- (CGFloat)InProportionAtWidth:(CGFloat)width;

/**
 *  取图片的比例，根据高取得 按比例的宽
 *
 *  @param height 高
 *
 *  @return 宽
 */
- (CGFloat)InProportionAtHeight:(CGFloat)height;

/** 压缩图片*/
+ (UIImage *)imageCompressForWidth:(UIImage *)sourceImage targetWidth:(CGFloat)defineWidth;


@end
